package org.framework.lazy.cloud.network.heartbeat.common.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;
import org.framework.lazy.cloud.network.heartbeat.common.MessageType;
import org.framework.lazy.cloud.network.heartbeat.common.advanced.AbstractHandleChannelHeartbeatTypeAdvanced;
import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.*;
import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeServicePermeateClientRealConnectTypeAdvanced;
import org.framework.lazy.cloud.network.heartbeat.common.advanced.client.AbstractHandleDistributeServicePermeateClientTransferTypeAdvanced;
import org.framework.lazy.cloud.network.heartbeat.common.advanced.server.*;

/**
 * @see MessageType
 */
@Getter
@AllArgsConstructor
public enum MessageTypeEnums {
    /**
     * @see AbstractHandleChannelHeartbeatTypeAdvanced
     */
    TYPE_HEARTBEAT(MessageType.TYPE_HEARTBEAT, "心跳"),
    /**
     * @see AbstractHandleClientConnectSuccessTypeAdvanced
     */
    REPORT_CLIENT_CONNECT_SUCCESS(MessageType.REPORT_CLIENT_CONNECT_SUCCESS, "上报 客户端连接成功"),
    /**
     * @see AbstractHandleReportDisconnectTypeAdvanced
     */
    REPORT_CLIENT_DISCONNECTION(MessageType.REPORT_CLIENT_DISCONNECTION, "上报 客户端断开连接"),
    /**
     * @see AbstractHandleReportStagingOpenedTypeAdvanced
     */
    REPORT_CLIENT_STAGING_OPENED(MessageType.REPORT_CLIENT_STAGING_OPENED, "上报 客户端暂存开启"),
    /**
     * @see AbstractHandleReportStagingClosedTypeAdvanced
     */
    REPORT_CLIENT_STAGING_CLOSED(MessageType.REPORT_CLIENT_STAGING_CLOSED, "上报 客户端暂存关闭"),
    /**
     * @see AbstractHandleReportServicePermeateClientTransferTypeAdvanced
     */

    REPORT_CLIENT_TRANSFER(MessageType.REPORT_CLIENT_TRANSFER, "上报 客户端数据传输（内网穿透数据回传）"),
    /**
     * @see AbstractHandleReportServicePermeateClientRealConnectTypeAdvanced
     */
    REPORT_SINGLE_CLIENT_REAL_CONNECT(MessageType.REPORT_SINGLE_CLIENT_REAL_CONNECT, "上报 客户端创建需要代理的真实端口成功"),
    /**
     * @see AbstractHandleReportServicePermeateClientCloseVisitorTypeAdvanced
     */
    REPORT_SINGLE_CLIENT_CLOSE_VISITOR(MessageType.REPORT_SERVICE_PERMEATE_CLIENT_CLIENT_CLOSE_VISITOR, "上报 客户端关闭一个访客通道"),
    /**
     * @see AbstractHandleReportSingleClientMessage2OtherClientTypeAdvanced
     */
    REPORT_SINGLE_CLIENT_MESSAGE(MessageType.REPORT_SINGLE_CLIENT_MESSAGE, "上报 客户端消息到另一个客户端"),
    /**
     * @see AbstractHandleReportServerChannelActiveTypeAdvanced
     */
    SERVER_CHANNEL_ACTIVE(MessageType.SERVER_CHANNEL_ACTIVE, "服务端通道 is active"),
    /**
     * @see AbstractHandleReportClusterNodeRegisterTypeAdvanced
     */
    REPORT_CLUSTER_NODE_REGISTER_MESSAGE(MessageType.REPORT_CLUSTER_NODE_REGISTER_MESSAGE, "上报 集群注册"),
    /**
     * @see AbstractHandleReportClientTransferServerPermeateChannelConnectionSuccessfulTypeAdvanced
     */
    REPORT_CLIENT_TRANSFER_SERVER_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL(MessageType.REPORT_CLIENT_TRANSFER_SERVER_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL, "上报 客户端渗透服务端数据传输通道连接成功"),
    /**
     * @see AbstractHandleReportClientPermeateServerInitTypeAdvanced
     */
    REPORT_CLIENT_PERMEATE_SERVER_INIT(MessageType.REPORT_CLIENT_PERMEATE_SERVER_INIT, "上报 客户端渗透服务端init信息"),
    /**
     * 上报 客户端渗透服务端init close 信息
     * @see AbstractHandleReportClientPermeateServerCloseTypeAdvanced
     */
    REPORT_CLIENT_PERMEATE_SERVER_CLOSE(MessageType.REPORT_CLIENT_PERMEATE_SERVER_CLOSE, "上报 客户端渗透服务端init close 信息"),


    /**
     * 上报 客户端渗透服务端通信通道关闭
     * @see AbstractHandleReportClientPermeateServerTransferCloseTypeAdvanced
     */
    REPORT_CLIENT_PERMEATE_SERVER_TRANSFER_CLOSE(MessageType.REPORT_CLIENT_PERMEATE_SERVER_TRANSFER_CLOSE, "上报 客户端渗透服务端通信通道关闭"),

    /**
     * 上报 客户端渗透服务端通信传输
     * @see AbstractHandleReportClientPermeateServerTransferTypeAdvanced
     */
    REPORT_CLIENT_PERMEATE_SERVER_TRANSFER(MessageType.REPORT_CLIENT_PERMEATE_SERVER_TRANSFER, "上报 客户端渗透服务端通信传输"),

    /**
     * @see AbstractHandleReportClientPermeateClientInitTypeAdvanced
     */
    REPORT_CLIENT_PERMEATE_CLIENT_INIT(MessageType.REPORT_CLIENT_PERMEATE_CLIENT_INIT, "上报 客户端渗透客户端init信息"),
    /**
     * 上报 客户端渗透客户端init close 信息
     * @see AbstractHandleReportClientPermeateClientCloseTypeAdvanced
     */
    REPORT_CLIENT_PERMEATE_CLIENT_CLOSE(MessageType.REPORT_CLIENT_PERMEATE_CLIENT_CLOSE, "上报 客户端渗透客户端init close 信息"),
    /**
     * 上报 客户端渗透客户端数据传输通道连接成功
     * @see AbstractHandleReportClientTransferClientPermeateChannelConnectionSuccessfulTypeAdvanced
     */
    REPORT_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL(MessageType.REPORT_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL, "上报 客户端渗透客户端数据传输通道连接成功"),

    /**
     * 上报 客户端渗透客户端数据传输通道init 成功
     * @see AbstractHandleReportClientTransferClientPermeateChannelInitSuccessfulTypeAdvanced
     */
    REPORT_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_INIT_SUCCESSFUL(MessageType.REPORT_CLIENT_PERMEATE_CLIENT_TRANSFER_CHANNEL_INIT_SUCCESSFUL, "上报 客户端渗透客户端数据传输通道init成功"),
    /**
     * 上报 上报客户端渗透客户端数据传输
     * @see AbstractHandleReportClientTransferClientTypeAdvanced
     */
    REPORT_CLIENT_TRANSFER_CLIENT_REQUEST(MessageType.REPORT_CLIENT_PERMEATE_CLIENT_TRANSFER_REQUEST, "上报客户端渗透客户端数据传输"),
    /**
     * 上报客户端渗透客户端数据传输结果
     * @see AbstractHandleReportClientTransferClientResponseTypeAdvanced
     */
    REPORT_CLIENT_TRANSFER_CLIENT_RESPONSE(MessageType.REPORT_CLIENT_TRANSFER_CLIENT_RESPONSE, "上报客户端渗透客户端数据传输结果"),
    /**
     * 上报客户端渗透客户端通信通道关闭
     *
     * @see AbstractHandleReportClientPermeateClientTransferCloseTypeAdvanced
     */
    REPORT_CLIENT_PERMEATE_CLIENT_TRANSFER_CLOSE(MessageType.REPORT_CLIENT_PERMEATE_CLIENT_TRANSFER_CLOSE, "上报客户端渗透客户端通信通道关闭"),
    /**
     * @see AbstractHandleDistributeConnectSuccessNotificationTypeAdvancedHandle
     */
    DISTRIBUTE_CLIENT_CONNECTION_SUCCESS_NOTIFICATION(MessageType.DISTRIBUTE_CLIENT_CONNECTION_SUCCESS_NOTIFICATION, "下发 客户端接收连接成功通知"),


    /**
     * @see AbstractHandleDistributeDisconnectTypeAdvancedHandle
     */
    DISTRIBUTE_CLIENT_DISCONNECTION_NOTIFICATION(MessageType.DISTRIBUTE_CLIENT_DISCONNECTION_NOTIFICATION, "下发 客户端断开连接通知"),
    /**
     * @see AbstractHandleDistributeStagingOpenedTypeAdvanced
     */
    DISTRIBUTE_CLIENT_STAGING_OPENED_NOTIFICATION(MessageType.DISTRIBUTE_CLIENT_STAGING_OPENED_NOTIFICATION, "下发 客户端暂存开启通知"),
    /**
     * @see AbstractHandleDistributeStagingClosedTypeAdvanced
     */
    DISTRIBUTE_CLIENT_STAGING_CLOSED_NOTIFICATION(MessageType.DISTRIBUTE_CLIENT_STAGING_CLOSED_NOTIFICATION, "下发 客户端暂存关闭通知"),
    /**
     * @see AbstractHandleDistributeServicePermeateClientTransferTypeAdvanced
     */
    DISTRIBUTE_CLIENT_TRANSFER(MessageType.DISTRIBUTE_CLIENT_TRANSFER, "下发 客户端数据传输(内网穿透数据发送)"),
    /**
     * @see AbstractHandleDistributeServicePermeateClientRealConnectTypeAdvanced
     */
    DISTRIBUTE_SINGLE_CLIENT_REAL_CONNECT(MessageType.DISTRIBUTE_SINGLE_CLIENT_REAL_CONNECT, "下发 客户端创建需要代理的真实端口"),
    /**
     * @see AbstractHandleDistributeSingleClientRealAutoReadConnectTypeAdvanced
     */
    DISTRIBUTE_SINGLE_CLIENT_REAL_CONNECT_AUTO_READ(MessageType.DISTRIBUTE_SINGLE_CLIENT_REAL_CONNECT_AUTO_READ, "下发 客户端代理的真实端口自动读写"),
    /**
     * @see AbstractHandleDistributeSingleClientRealCloseVisitorTypeAdvanced
     */
    DISTRIBUTE_SINGLE_CLIENT_REAL_CLOSE_VISITOR(MessageType.DISTRIBUTE_SERVER_PERMEATE_CLIENT_REAL_CLOSE_VISITOR, "下发 客户端关闭代理服务通道"),
    /**
     * @see AbstractHandleDistributeSingleClientMessageTypeAdvanced
     */
    DISTRIBUTE_SINGLE_CLIENT_MESSAGE(MessageType.DISTRIBUTE_SINGLE_CLIENT_MESSAGE, "下发 客户端消息"),
    /**
     * @see AbstractHandleClientChannelActiveAdvanced
     */
    CLIENT_CHANNEL_ACTIVE(MessageType.CLIENT_CHANNEL_ACTIVE, "客户端通道 is active"),
    /**
     * @see AbstractHandleDistributeClusterNodeRegisterTypeAdvanced
     */
    DISTRIBUTE_CLUSTER_NODE_REGISTER_MESSAGE(MessageType.DISTRIBUTE_CLUSTER_NODE_REGISTER_MESSAGE, "下发 集群注册"),

    /**
     * @see AbstractHandleDistributeClientTransferServerPermeateChannelConnectionSuccessfulTypeAdvanced
     */
    DISTRIBUTE_CLIENT_TRANSFER_SERVER_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL(MessageType.DISTRIBUTE_CLIENT_TRANSFER_SERVER_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL, "下发 客户端渗透服务端数据传输通道连接成功"),
    /**
     * @see AbstractHandleDistributeClientPermeateServerInitTypeAdvanced
     */
    DISTRIBUTE_CLIENT_PERMEATE_SERVER_INIT(MessageType.DISTRIBUTE_CLIENT_PERMEATE_SERVER_INIT, "下发 客户端渗透服务端init信息"),

    /**
     * @see AbstractHandleDistributeClientPermeateServerCloseTypeAdvanced
     */
    DISTRIBUTE_CLIENT_PERMEATE_SERVER_CLOSE(MessageType.DISTRIBUTE_CLIENT_PERMEATE_SERVER_CLOSE, "下发 客户端渗透服务端init close信息"),
    /**
     * @see AbstractHandleDistributeClientPermeateServerTransferCloseTypeAdvanced
     */
    DISTRIBUTE_CLIENT_PERMEATE_SERVER_TRANSFER_CLOSE(MessageType.DISTRIBUTE_CLIENT_PERMEATE_SERVER_TRANSFER_CLOSE, "下发 客户端渗透服务端通信通道关闭"),
    /**
     * @see AbstractHandleDistributeClientPermeateServerTransferTypeAdvanced
     */
    DISTRIBUTE_CLIENT_PERMEATE_SERVER_TRANSFER(MessageType.DISTRIBUTE_CLIENT_PERMEATE_SERVER_TRANSFER, "下发 客户端渗透服务端通信传输"),

    /**
     * @see AbstractHandleDistributeClientPermeateClientInitTypeAdvanced
     */
    DISTRIBUTE_CLIENT_PERMEATE_CLIENT_INIT(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_INIT, "下发 客户端渗透客户端init信息"),


    /**
     * @see AbstractHandleDistributeClientPermeateClientCloseTypeAdvanced
     */
    DISTRIBUTE_CLIENT_PERMEATE_CLIENT_CLOSE(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_CLOSE, "下发 客户端渗透客户端init close信息"),
    /**
     * @see AbstractHandleDistributeClientTransferClientPermeateChannelConnectionSuccessfulTypeAdvanced
     */
    DISTRIBUTE_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL(MessageType.DISTRIBUTE_CLIENT_TRANSFER_CLIENT_PERMEATE_CHANNEL_CONNECTION_SUCCESSFUL, "下发 客户端渗透客户端数据传输通道连接成功"),
    /**
     * 下发 客户端渗透客户端数据传输通道init 成功
     * @see AbstractHandleDistributeClientTransferClientPermeateChannelInitSuccessfulTypeAdvanced
     */
    DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_CHANNEL_INIT_SUCCESSFUL(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_CHANNEL_INIT_SUCCESSFUL, "下发 客户端渗透客户端数据传输通道init 成功"),
    /**
     * 下发客户端渗透客户端数据传输
     * @see AbstractHandleDistributeClientTransferClientRequestTypeAdvanced
     */
    DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_REQUEST(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_REQUEST, "下发客户端渗透客户端数据传输"),
       /**
     * 下发客户端渗透客户端数据传输
     * @see AbstractHandleDistributeServicePermeateClientTransferClientResponseTypeAdvanced
     */
       DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_RESPONSE(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_RESPONSE, "下发客户端渗透客户端数据传输"),
    /**
     * 下发客户端渗透客户端通信通道关闭
     *
     * @see MessageTypeEnums#DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_CLOSE
     * @see AbstractHandleDistributeClientPermeateClientTransferCloseTypeAdvanced
     */
    DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_CLOSE(MessageType.DISTRIBUTE_CLIENT_PERMEATE_CLIENT_TRANSFER_CLOSE, "下发客户端渗透客户端通信通道关闭"),
    ;

    private final byte typeByte;
    private final String desc;
}
